<?php
/* generated page "viewkey" */
// include header code
session_start();
$log_unique_id = sprintf("%04x", rand(0, 0xffff));
function log_message($msg, $also_debug = true) {
global $log_unique_id;
$msg = "[$log_unique_id] $msg"; // append a unique ID to help us track requests
$fp = fopen("php.log", "a");
fwrite($fp, date("Y-m-d H:i:s") . " header.php: $msg\n");
fclose($fp);
// also echo to debug
if ($also_debug) {
echo "\$('response').innerHTML = \"" . htmlentities($msg) . "\";\n";
}
}
function local_die($message) {
log_message("DEATH: $message");
die($message);
}
// make sure that the db exists for stored_events
$db = new PDO('sqlite:stored_events.db') or local_die("could not open db");
$s = $db->prepare("SELECT * FROM stored_events");
if (!$s) {
// create the table
$q = $db->query("CREATE TABLE stored_events (
      id INT AUTO_INCREMENT PRIMARY KEY,
      page_id VARCHAR(64) NOT NULL,
      event_name VARCHAR(64) NOT NULL,
      arg0 BLOB
    );") or local_die("could not create table: " . print_r($db->errorInfo(), true));
log_message("table for stored_events created", false);
}
function require_session($var, $default = "") {
return isset($_SESSION[$var]) ? $_SESSION[$var] : $default;
}
function require_get($var, $default = "") {
return isset($_GET[$var]) ? $_GET[$var] : $default;
}
class IamlRuntimeException extends Exception {
public function __construct($message = "") {
parent::__construct($message);
}
}
require("create_database.php"); // ensure DB exists
// run any event triggers for this page
// EventTrigger org.openiaml.model.model.impl.EventTriggerImpl@66afc4 (isGenerated: true, id: model.11e47202c05.31, name: access)
// RunInstanceWires sorted by priority
do_model_11e47202c05_19(/* a property from our session */ require_session("model_11e37b8d89c_17"));
// expand any operations (both in this page and in any surrounding scopes)
// expanding operations for org.openiaml.model.model.visual.impl.PageImpl@15c0d33 (isGenerated: false, id: visual.11e37b8d948.d, name: viewkey, overridden: false) (url: null)
/** composite operation "update" */
$running_model_11e47202c05_28 = false;
function do_model_11e47202c05_28($model_11e47202c05_2b) {
// operation: update
global $running_model_11e47202c05_28;
if ($running_model_11e47202c05_28 == false) {
$running_model_11e47202c05_28 = true; // prevent loops
// has this operation got a fail handler?
// execute the operation
// flow starts here
// chained operation setPropertyToValue
// outFlows first to = org.openiaml.model.model.impl.ApplicationElementPropertyImpl@1839d2e (isGenerated: true, id: model.11e47202c05.2a, name: fieldValue, defaultValue: null)
queue_set_application_property("visual_11e37df5bce_1c", model_11e47202c05_2b);
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@1f70a5d (isGenerated: true, id: operations.11e47202c63.e)
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@1f70a5d (isGenerated: true, id: operations.11e47202c63.e)
// continue chained operations
// continue chained operations
$running_model_11e47202c05_28 = false;
}
}
/** composite operation "check key" */
$running_model_11e47202c05_19 = false;
function do_model_11e47202c05_19($model_11e47202c05_1a) {
// operation: check key
global $running_model_11e47202c05_19;
if ($running_model_11e47202c05_19 == false) {
$running_model_11e47202c05_19 = true; // prevent loops
// has this operation got a fail handler?
// fail edge org.openiaml.model.model.wires.impl.NavigateWireImpl@bce3d7 (isGenerated: true, id: wires.11e47202c63.a) (name: fail, overridden: false)
try {
// execute the operation
// flow starts here
// decision operation equal?
if ($model_11e47202c05_1a == "42") {
// passed (exactly one pass)
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@1f33149 (isGenerated: true, id: operations.11e47202c63.9)
} else {
// failed (exactly one fail)
throw new IamlRuntimeException("Error: Key check failed. You may need to login.");
}
// continue chained operations
// continue chained operations
// ignoring fail wire
} catch (IamlRuntimeException $e) {
log_message("Caught exception $e");
// we need to navigate to the fail page
$url = "visual_11e47202c63_4.php?fail=" . urlencode($e->getMessage());
log_message("Redirecting to '$url' (fail)");
header("Location: $url");
die;
}
$running_model_11e47202c05_19 = false;
}
}
/** composite operation "do logout" */
$running_model_11e47202c05_20 = false;
function do_model_11e47202c05_20() {
// operation: do logout
global $running_model_11e47202c05_20;
if ($running_model_11e47202c05_20 == false) {
$running_model_11e47202c05_20 = true; // prevent loops
// has this operation got a fail handler?
// execute the operation
// flow starts here
// chained operation setPropertyToValue
// outFlows first to = org.openiaml.model.model.impl.ApplicationElementPropertyImpl@13641d6 (isGenerated: false, id: model.11e37b8d89c.17, name: my login key, defaultValue: null)
$_SESSION["model_11e37b8d89c_17"] = "null" /* static value "model_11e47202c05_21" */;
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@cedf4e (isGenerated: true, id: operations.11e47202c63.c)
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@cedf4e (isGenerated: true, id: operations.11e47202c63.c)
// continue chained operations
// continue chained operations
// navigate to another page
$url = "visual_11e19f1b1ea_2.php";
log_message("Redirecting to '$url'");
header("Location: $url");
die;
$running_model_11e47202c05_20 = false;
}
} ?><html>
<head>
<title>viewkey</title>
<link rel="stylesheet" type="text/css" href="default.css" />
<script language="Javascript" src="js/prototype.js"></script>
<script language="Javascript">
/* approach #2: use event queues stored on the server, if the function is
not available on the current page */
function store_event(page_id, event_name, arg0) {
var url = 'store_event.php?page_id=' + escape(page_id) + '&event_name='
+ escape(event_name) + "&arg0=" + escape(arg0);
debug("creating ajax request to url: " + url);
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) + 1; // increment ajax counter
new Ajax.Request(url, {
method: 'get', onSuccess: function(transport) {
var response = transport.responseText || "no response text";
debug("success: " + response);
document.getElementById('response').innerHTML = response;
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) - 1;
// decrement ajax counter
}, onFailure: function(transport) {
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) - 1;
// decrement ajax counter
debug("something went wrong: " + transport.responseText);
$('ajax_monitor').innerHTML = 'failed: ' + response.responseText; // for speeding up testing
alert('Something went wrong...'); // alert is last so we can continue execution
}
});
debug("store_event called");
}
/* save directly to database (only one attribute) */
function store_db(attribute_id, arg0) {
var url = 'store_db.php?attribute_id=' + escape(attribute_id) + '&arg0='
+ escape(arg0);
debug("creating ajax request to url: " + url);
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) + 1; // increment ajax counter
new Ajax.Request(url, {
method: 'get', onSuccess: function(transport) {
var response = transport.responseText || "no response text";
debug("success: " + response);
document.getElementById('response').innerHTML = response;
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) - 1;
// decrement ajax counter
}, onFailure: function(transport) {
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) - 1;
// decrement ajax counter
debug("something went wrong: " + transport.responseText);
$('ajax_monitor').innerHTML = 'failed: ' + response.responseText; // for speeding up testing
alert('Something went wrong...'); // alert is last so we can continue execution
}
});
debug("store_db called");
}
/* save a session variable (only one attribute) */
function set_session(id, arg0, function_queue) {
var url = 'set_session.php?id=' + escape(id) + '&arg0=' + escape(arg0);
debug("creating ajax request to url: " + url);
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) + 1; // increment ajax counter
new Ajax.Request(url, {
method: 'get', onSuccess: function(transport) {
var response = transport.responseText || "no response text";
debug("success: " + response);
document.getElementById('response').innerHTML = response;
// execute the function queue
if (function_queue) {
debug('executing function queue');
function_queue();
}
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) - 1;
// decrement ajax counter
}, onFailure: function(transport) {
$('ajax_monitor').innerHTML = (1 * $('ajax_monitor').innerHTML) - 1;
// decrement ajax counter
debug("something went wrong: " + transport.responseText);
$('ajax_monitor').innerHTML = 'failed: ' + response.responseText; // for speeding up testing
alert('Something went wrong...'); // alert is last so we can continue execution
}
});
debug("set_session called");
}
var debug_message_saved = "";
function debug(msg) {
var debug_string = "<li>" + msg + "\n";
if (document.getElementById('debug')) {
document.getElementById('debug').innerHTML += debug_message_saved + debug_string;
debug_message_saved = "";
} else {
debug_message_saved += debug_string;
}
}
/**
* Populate all of the fields on the page.
*/
function populateFields() {
// get all fields on the page
debug("populating fields...");
populateAll(document.getElementsByTagName("input"));
populateAll(document.getElementsByTagName("textarea"));
}
/**
* Populate all of the fields in the list, based on .id and .value
*/
function populateAll(fields) {
var i;
for (i = 0; i < fields.length; i++) {
var cookieName = "field_" + fields[i].id;
if (readCookie(cookieName) != null) {
debug("field " + fields[i].id + " (cookie name " + cookieName + ") set to value "
+ readCookie(cookieName));
fields[i].value = readCookie(cookieName);
}
}
}
/**
* Save the value of a particular field
*/
function setField(field) {
debug("saving cookie for " + field.id);
createCookie("field_" + field.id, field.value, 30);
}
/**
* Is every element in the array equal?
*/
function is_array_equal(a) {
if (a.length <= 1) return true;
for (var i = 1; i < a.length; i++) {
if (a[0] != a[i]) return false;
}
return true;
}
/**
* Define an exception class.
*/
function IamlJavascriptException(message) {
this.message = message;
this.getMessage = function() {
return message;
}
this.toString = function() {
return "IamlJavascriptException: " + message;
}
}
// ---------
/**
* Copied from http://www.quirksmode.org/js/cookies.html
*/
function createCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
} else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}
/* page onload functions */
populateFields();
</script>
<script language="Javascript">
var try_catch_depth = 0;
// expanding operations for org.openiaml.model.model.visual.impl.PageImpl@15c0d33 (isGenerated: false, id: visual.11e37b8d948.d, name: viewkey, overridden: false) (url: null)
/** composite operation "update" */
var running_model_11e47202c05_28 = false;
function do_model_11e47202c05_28(model_11e47202c05_2b) {
// operation: update
if (running_model_11e47202c05_28 == false) {
running_model_11e47202c05_28 = true; // prevent loops
// has this operation got a fail handler?
// execute the operation
// if we are at the root try/catch, catch the exception explicitly
if (try_catch_depth == 0) {
try {
// get chained functions
var function_queue = function() {
// continue with any chained operations
}
var function_queue_queued = false;
// flow starts here
// chained operation setPropertyToValue
// outFlows first to = org.openiaml.model.model.impl.ApplicationElementPropertyImpl@1839d2e (isGenerated: true, id: model.11e47202c05.2a, name: fieldValue, defaultValue: null)
document.getElementById('visual_11e37df5bce_1c').value = model_11e47202c05_2b;
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@1f70a5d (isGenerated: true, id: operations.11e47202c63.e)
// expanding inline event trigger edit
// should we still run the chained functions?
if (!function_queue_queued) function_queue();
} catch (e if e instanceof IamlJavascriptException) {
// unexpected exception
alert("Unexpected exception: " + e);
}
} else {
// get chained functions
var function_queue = function() {
// continue with any chained operations
}
var function_queue_queued = false;
// flow starts here
// chained operation setPropertyToValue
// outFlows first to = org.openiaml.model.model.impl.ApplicationElementPropertyImpl@1839d2e (isGenerated: true, id: model.11e47202c05.2a, name: fieldValue, defaultValue: null)
document.getElementById('visual_11e37df5bce_1c').value = model_11e47202c05_2b;
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@1f70a5d (isGenerated: true, id: operations.11e47202c63.e)
// expanding inline event trigger edit
// should we still run the chained functions?
if (!function_queue_queued) function_queue();
}
running_model_11e47202c05_28 = false;
}
}
/** composite operation "check key" */
var running_model_11e47202c05_19 = false;
function do_model_11e47202c05_19(model_11e47202c05_1a) {
// operation: check key
if (running_model_11e47202c05_19 == false) {
running_model_11e47202c05_19 = true; // prevent loops
// has this operation got a fail handler?
// fail edge org.openiaml.model.model.wires.impl.NavigateWireImpl@bce3d7 (isGenerated: true, id: wires.11e47202c63.a) (name: fail, overridden: false)
try {
try_catch_depth++;
// execute the operation
// if we are at the root try/catch, catch the exception explicitly
if (try_catch_depth == 0 && false) {
try {
// get chained functions
var function_queue = function() {
// continue with any chained operations
// ignoring fail wire
}
var function_queue_queued = false;
// flow starts here
// chained operation equal?
if (is_array_equal(new Array(model_11e47202c05_1a, "42"))) {
// passed (exactly one pass)
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@1f33149 (isGenerated: true, id: operations.11e47202c63.9)
} else {
// failed (exactly one fail)
throw new IamlJavascriptException("Error: Key check failed. You may need to login.");
}
// should we still run the chained functions?
if (!function_queue_queued) function_queue();
} catch (e if e instanceof IamlJavascriptException) {
// unexpected exception
alert("Unexpected exception: " + e);
}
} else {
// get chained functions
var function_queue = function() {
// continue with any chained operations
// ignoring fail wire
}
var function_queue_queued = false;
// flow starts here
// chained operation equal?
if (is_array_equal(new Array(model_11e47202c05_1a, "42"))) {
// passed (exactly one pass)
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@1f33149 (isGenerated: true, id: operations.11e47202c63.9)
} else {
// failed (exactly one fail)
throw new IamlJavascriptException("Error: Key check failed. You may need to login.");
}
// should we still run the chained functions?
if (!function_queue_queued) function_queue();
}
try_catch_depth--;
} catch (e if e instanceof IamlJavascriptException) {
debug("Caught exception " + e);
// we need to navigate to the fail page
var url = "visual_11e47202c63_4.php?fail=" + e; /* TODO urlencode me */
debug("Redirecting to '" + url + "' (fail)");
window.location = url;
}
running_model_11e47202c05_19 = false;
}
}
/** composite operation "do logout" */
var running_model_11e47202c05_20 = false;
function do_model_11e47202c05_20() {
// operation: do logout
if (running_model_11e47202c05_20 == false) {
running_model_11e47202c05_20 = true; // prevent loops
// has this operation got a fail handler?
// execute the operation
// if we are at the root try/catch, catch the exception explicitly
if (try_catch_depth == 0) {
try {
// get chained functions
var function_queue = function() {
// continue with any chained operations
// navigate to another page
var url = "visual_11e19f1b1ea_2.php";
debug("Redirecting to '" + url + "'");
window.location = url;
}
var function_queue_queued = false;
// flow starts here
// chained operation setPropertyToValue
// outFlows first to = org.openiaml.model.model.impl.ApplicationElementPropertyImpl@13641d6 (isGenerated: false, id: model.11e37b8d89c.17, name: my login key, defaultValue: null)
set_session("model_11e37b8d89c_17", "null" /* static value "model_11e47202c05_21" */,
function_queue); // pass it a function queue to execute afterwards
function_queue_queued = true; // we are waiting for it to return to execute the function queue
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@cedf4e (isGenerated: true, id: operations.11e47202c63.c)
// should we still run the chained functions?
if (!function_queue_queued) function_queue();
} catch (e if e instanceof IamlJavascriptException) {
// unexpected exception
alert("Unexpected exception: " + e);
}
} else {
// get chained functions
var function_queue = function() {
// continue with any chained operations
// navigate to another page
var url = "visual_11e19f1b1ea_2.php";
debug("Redirecting to '" + url + "'");
window.location = url;
}
var function_queue_queued = false;
// flow starts here
// chained operation setPropertyToValue
// outFlows first to = org.openiaml.model.model.impl.ApplicationElementPropertyImpl@13641d6 (isGenerated: false, id: model.11e37b8d89c.17, name: my login key, defaultValue: null)
set_session("model_11e37b8d89c_17", "null" /* static value "model_11e47202c05_21" */,
function_queue); // pass it a function queue to execute afterwards
function_queue_queued = true; // we are waiting for it to return to execute the function queue
// do nothing org.openiaml.model.model.operations.impl.FinishNodeImpl@cedf4e (isGenerated: true, id: operations.11e47202c63.c)
// should we still run the chained functions?
if (!function_queue_queued) function_queue();
}
running_model_11e47202c05_20 = false;
}
}
// this needs to be loaded *after* the page has loaded
function loadStoredEvents() {
$('response').innerHTML = "before loadStoredEvents...";
<?php
/**
* Expand all possible events for the current page.
*/
// first, make sure the table exists
$db = new PDO('sqlite:stored_events.db') or local_die("could not open db");
$s = $db->prepare("SELECT * FROM stored_events");
if (!$s) {
// create the table
$q = $db->query("CREATE TABLE stored_events (
      id INT AUTO_INCREMENT PRIMARY KEY,
      page_id VARCHAR(64) NOT NULL,
      event_name VARCHAR(64) NOT NULL,
      arg0 BLOB
    );") or local_die("could not create table: " . print_r($db->errorInfo(), true));
}
log_message("finding events for page id visual.11e37b8d948.d");
$s = $db->prepare("SELECT * FROM stored_events WHERE page_id=?") or local_die("could not get stored events: "
. print_r($db->errorInfo(), true));
$s->execute(array("visual.11e37b8d948.d")) or local_die("could not execute select query: "
. print_r($db->errorInfo(), true));
foreach ($s->fetchAll() as $row) {
log_message("found event $row[id]: event_name=$row[event_name] arg0=$row[arg0]");
echo $row["event_name"] . "(\"" . $row["arg0"] . "\"); // from db "
. $row["id"] . "\n";
}
// delete all the events for this page now
log_message("deleting all events for page visual.11e37b8d948.d");
$s = $db->prepare("DELETE FROM stored_events WHERE page_id=?") or local_die("could not delete stored events: "
. print_r($db->errorInfo(), true));
$s->execute(array("visual.11e37b8d948.d")) or local_die("could not execute delete query: "
. print_r($db->errorInfo(), true)); ?>
}
</script>
</head><body onLoad="loadStoredEvents()"><div style="font-size:small; text-align: right;"><a href="clear_session.php">clear session</a>- <a href="sitemap.html">sitemap</a></div><h1>viewkey</h1><div id="runtime_errors"><!-- any runtime errors go into here --><p><?php
/* expand any fail error messages */
if (require_get("fail")) { ?><div class="error">An exception occured: <i><?php echo htmlspecialchars(require_get("fail"));?></i></div><?php }?></p></div><div><label id="label_visual_11e37df5bce_1c">current login key <input type="text"
id="visual_11e37df5bce_1c" name="visual_11e37df5bce_1c" onChange=" return false;"></label></div><div
id="debug"><div><div id="response">empty</div>
<!-- for test cases to improve speed: an outstanding ajax calls counter -->
<div id="ajax_monitor"> </div> </div> </div> </body> </html>